perm filename STAT.SAI[4,KMC] blob
sn#156970 filedate 1975-04-19 generic text, type T, neo UTF8
BEGIN
REQUIRE "IODEFS[1,BLF]" SOURCE_FILE;
DEFINE ITT(X,N) = "FOR X←1 STEP 1 UNTIL N DO";
DEFINE ∂=" &BLANK1& ";
STRING BLANK1,BLANK10,BLANK20,DELIMSS,FORMFEED;
REAL N1,N2,U1,U2,R1,R2,M;
INTEGER DICE, SW, P, P1, Q, Q1, I, I1, J, J1, K, K1, W, L, T, WFLAG;
INTEGER NEXTL,NEXTA,LI,SSLEN,ATLEN,ERROR,IDUM,INCH1,INCH2,EOF1,EOF2;
REAL R, RR, RRR;
STRING S, SS, SSS,ST,SY,SV,FILENAME,SU,LASTNAME,LASTLINE,ZEROKS,TOPIC,LASTB,AREA;
STRING OUTFILE,RATER,DIM,INTNAME;
STRING S1,S2,S3;
INTEGER ARRAY AA[1:10];
INTEGER ARRAY BB[1:10];
REAL ARRAY CC[1:10];
STRING PROC RIGHTZ(INTEGER L; STRING S);
RETURN(IF LN(S)<L THEN ZEROKS[1 TO L-LN(S)]&S ELSE S[1 TO L]);
STRING PROC OFFS(STRING S; INTEGER I);
BEGIN STRING ST; INTEGER L; L←LENGTH(S);
IF I<L THEN ST←S[I+1 TO L] ELSE ST←NULL; RETURN (ST) ; END;
BOOLEAN PROC EQS(STRING S);
RETURN(IF EQU(S,NULL) OR S=" " THEN TRUE ELSE FALSE);
STRING PROC READIN(INTEGER CHAN);
BEGIN STRING S; S←INPUT(CHAN,1);
WHILE ¬EOF AND EQS(S) DO S←INPUT(CHAN,1);
IF EOF THEN IF CHAN=INCH1 THEN EOF1←EOF ELSE EOF2←EOF; RETURN(S); END;
PROC OUTB(INTEGER CHAN; STRING S);
BEGIN IF ¬EQU(SV,S[1 TO 6]) THEN BEGIN OUT(OUCH, NULL ↓ ); SV←S[1 TO 6]; END;
OUT(OUCH, S); END;
FORMFEED← '14;
ZEROKS←"000000000000";
BLANKS←" ";
BLANK1←" ";
BLANK20←" ";
BLANK10←" ";
FLAG←0;
STDBRK(INCH);
DELIMSS← '15 & '12 & '40 & '11 & '14;
SETBREAK(1, '12, '14 & '15, "INS");
SETBREAK(13, '12 & '40, '15, "INS");
SETBREAK(14,DELIMSS & " ?.()","","INR");
SETBREAK(15,"αλ","","INR");
COMMENT BREAKSETS 17 AND 18 ARE RESERVED FOR TEMPORARY USE;
SW←0; J←0;
COMMENT ********************************* ;
WHILE TRUE DO BEGIN "TOPBLOCK"
S←ASK("H FOR HELP -- GO?");
IF EQU(S, "X") THEN DONE "TOPBLOCK";
IF EQU(S, "H") THEN BEGIN
SAY("C for computing mann-whitney stats " ↓ ↓ );
END; COMMENT END OF H ROUTINE;
COMMENT COMPUTE STATS ;
IF EQU(S,"C") THEN BEGIN "C"
SAY("This computes mann-whitney stats " ↓ );
FILENAME←ASK("FILIN[CR FOR EXIT]=");
FILIN(FILENAME);
SS←ASK("FILOUT="); FILOUT(SS);
SS←INPUT(INCH,1);
SS←INPUT(INCH,1);
WHILE ¬EOF DO BEGIN "FILES"
SAY(NULL ↓ ); SAY("OLD:" ↓ ); SAY("SS="&SS ↓ );
ITT(I,10) BEGIN ST←SCAN(SS,3,IDUM);
ST←SCAN(SS,7,IDUM); SAY("ST="&ST ↓ ); AA[I]←CVD(ST); END;
ITT(I,10) SAY(CVS(AA[I]) & " " );
SAY(NULL ↓ ); SAY("NEW:" ↓ );
SS←INPUT(INCH,1);
SS←INPUT(INCH,1);
ITT(I,10) BEGIN ST←SCAN(SS,3,IDUM); ST←SCAN(SS,7,IDUM); BB[I]←CVD(ST); END;
ITT(I,10) SAY(CVS(BB[I]) & " " );
J←0; SAY(NULL ↓ ); SAY("RANKS:" ↓ );
ITT(I,10) BEGIN K←AA[I]+BB[I];
IF K=0 THEN CC[I]←0 ELSE CC[I]←(J+J+K+1)/2; J←K+J;
SAY(CVF(CC[I]) & " " );
END;
SAY(NULL ↓ );
N1←0; ITT(I,10) N1←N1+AA[I]; SAY("N1= " & CVF(N1) ↓ );
N2←0; ITT(I,10) N2←N2+BB[I]; SAY("N2= " & CVF(N2) ↓ );
R1←0; ITT(I,10) R1←AA[I]*CC[I] + R1; SAY("R1= " & CVF(R1) ↓ );
R2←0; ITT(I,10) R2←BB[I]*CC[I] + R2; SAY("R2= " & CVF(R2) ↓ );
M←N1*N2;
U1← M + N1*(N1+1)/2 - R1; SAY("U1= " & CVF(U1) ↓ );
U2← M + N2*(N2+1)/2 - R2; SAY("U2= " & CVF(U2) ↓ );
SAY("U1+U2= " & CVF(U1+U2) ↓ );
SAY("N1*N2= " & CVF( M ) ↓ );
R←M*(N1+N2+1)/12;
RR←(U1-M/2)*(U1-M/2)/R; SAY("X2= " & CVF(RR) ↓ );
RR←(U2-M/2)*(U2-M/2)/R; SAY("X2= " & CVF(RR) ↓ );
SS←INPUT(INCH,1);
SS←INPUT(INCH,1);
END "FILES" ;
RELEASE(OUCH); RELEASE(INCH);
END "C" ;
COMMENT T ROUTINE FOR TESTING THINGS;
IF EQU(S,"T") THEN BEGIN
END; COMMENT END OF S=T;
END "TOPBLOCK" ; COMMENT END TO INFINITE LOOP;
ITT(I,3) RELEASE(INCH); ITT(I,3) RELEASE(OUCH);
COMMENT END OF PROGRAM;
END;
.RU STAT
H FOR HELP -- GO?C
This computes mann-whitney stats
FILIN[CR FOR EXIT]=S
FILOUT=SSS
OLD:
SS= 79 26 19 22 27 42 13 28 30 139
ST=79
ST=26
ST=19
ST=22
ST=27
ST=42
ST=13
ST=28
ST=30
ST=139
79 26 19 22 27 42 13 28 30 139
NEW:
84 37 45 29 27 38 25 41 55 199
RANKS:
82.0000000 195.0000000 258.5000000 316.0000000 368.5000000 435.5000000 494.5000000 548.0000000 625.0000000 836.5000000
N1= 425.0000000
N2= 580.0000000
R1= 208448.0000000
R2= 297067.0000000
U1= 128577.0000000
U2= 117923.0000000
U1+U2= 246500.0000000
N1*N2= 246500.0000000
X2= 1.3731935
X2= 1.3731935
OLD:
SS= 100 24 45 39 37 52 41 76 76 489
ST=100
ST=24
ST=45
ST=39
ST=37
ST=52
ST=41
ST=76
ST=76
ST=489
100 24 45 39 37 52 41 76 76 489
NEW:
104 18 43 35 36 47 45 84 97 494
RANKS:
102.5000000 225.5000000 290.5000000 371.5000000 445.0000000 531.0000000 623.5000000 746.5000000 913.0000000 1491.0000000
N1= 979.0000000
N2= 1003.0000000
R1= 968084.5000000
R2= 997068.5000000
U1= 493562.5000000
U2= 488374.5000000
U1+U2= 981937.0000000
N1*N2= 981937.0000000
X2= .0414682
X2= .0414682
OLD:
SS= 54 19 18 25 17 24 14 23 25 123
ST=54
ST=19
ST=18
ST=25
ST=17
ST=24
ST=14
ST=23
ST=25
ST=123
54 19 18 25 17 24 14 23 25 123
NEW:
49 14 15 22 20 25 21 31 31 128
RANKS:
52.0000000 120.0000000 153.0000000 193.0000000 235.0000000 278.0000000 320.0000000 364.5000000 419.5000000 573.0000000
N1= 342.0000000
N2= 356.0000000
R1= 117164.0000000
R2= 126787.0000000
U1= 63241.0000000
U2= 58511.0000000
U1+U2= 121752.0000000
N1*N2= 121752.0000000
X2= .7886608
X2= .7886608
H FOR HELP -- GO?X
End of SAIL execution
↑C
.